package com.wksc.framework.impexp.pattern;

import com.wksc.framework.impexp.bean.BaseFormatParams;

import java.util.Map;

/**
 * <p> Title(文件名): ValStrPatternSp.java </p>
 * <p> Description(描述): 带特殊分隔符的数值转换pattern类,
 * 待格式化内容为"1,2,3,4" 需要拆分格式化后重组</p>
 * <p> Copyright(版权): Copyright (c) 2011 </p>
 * <p> Company(公司): 成都四方信息技术有限公司 </p>
 * <p> CreateTime(生成日期)：2011-11-29下午02:13:38 </p>
 * @author wanglei
 * @version impExp_C13_P
 */
public class ValStrPatternSp extends ValStrPattern {
	private static final long serialVersionUID = -6582169603288640396L;
	private String separator = ",";

	public ValStrPatternSp() {
		super();
	}
	
	/**
	 * 此类适用于带分隔符的数值转换类型,分隔符分隔数据库中查询的数值
	 * 适用此构造函数则使用默认分隔符","
	 * @param map
	 */
	public ValStrPatternSp(Map<Integer, String> map) {
		super(map);
	}

	/**
	 * 此类适用于带分隔符的数值转换类型,分隔符分隔数据库中查询的数值
	 * @param map 
	 * @param separator 分隔符
	 */
	public ValStrPatternSp(Map<Integer, String> map, String separator) {
		super(map);
		this.separator = separator;
	}

	@Override
	public synchronized String format(BaseFormatParams params) {
		StringBuffer tmpStr = new StringBuffer();
		int value;
		//将待转换的内容使用分隔符拆分为数组
		String[] strs = ((String)params.getCellContent()).split(separator);
		//遍历字符串数组,然后查找map中对应的值
		for(String s: strs){
			try{
			  value = Integer.valueOf(s);
			  tmpStr.append(map.get(value)).append(separator);
			}catch(NumberFormatException e){
				continue; //出错则忽略
			}
		}
		String result = tmpStr.toString();
		return result.substring(0, result.lastIndexOf(separator));//剃掉最后一个分隔符
	}

	
}
